In the same extent as man automates its environment and procedures by machinery, man becomes automated by his machines. The initial point of the work Coin is the malfunction of a machine. Caught in a monotonous loop, provoked by this error, a person either becomes a „stupid machine“ itself, or gives up and flees the situation. The machine Coin does not give up. Again and again it throws a coin into a coin slot. Over and over again this coin falls through. Until this machine is malfunctioning too.
Photography: Image Recorder
Technical description
Coin, coin slot, aluminium plates, steel plate, Firgelli Linear Actuator, servo motor, solenoids, Arduino Uno, custom electronics
Arduino - Code
/* Created by Jochen Zeirzer http://www.jochen_zeirzer.public2.linz.at/ project: coin year: 2013
The Morse Code part in this sketch is based on a project by Geoff Parsons alias skhisma https://github.com/skhisma/arduino-morse-code/blob/master/arduino-morse-code.pde */
#include <VarSpeedServo.h>
VarSpeedServo ServoLift; // Servo to Lift the Coin VarSpeedServo ServoLin; // Firgelli L12P Linear actuator
int TransMag1 = 10; // Transistor to switch Magnet 1 = Magnet pull on digital PIN 10 int TransMag2 = 11; // Transistor to switch Magnet 2 = Magnet push on digital PIN 11 int IRsend = 12; // IR-LED to detect coin on digital PIN 12 int IRreceive = A0; // IR-Transitor to detect coin on analog PIN 0 const int threshold = 50; // Threshold level analog input (IR light barrier)
int beep = 13; // Piezo Speaker on digital PIN 13 int length = 50; // Morse Code Unit length in milliseconds
char* lookup[] = { // International Morse Code Characters (ITU) ".-", //a "-...", //b "-.-.", //c "-..", //d ".", //e "..-.", //f "--.", //g "....", //h "..", //i ".---", //j "-.-", //k ".-..", //l "--", //m "-.", //n "---", //o ".--.", //p "--.-", //q ".-.", //r "...", //s "-", //t "..-", //u "...-", //v ".--", //w "-..-", //x "-.--", //y "--..", //z };
void setup() {
Serial.begin(9600);
// 1kHz PWM on pin3 for Linar Actuator Firgelli L12P // configure hardware timer2 to generate a fast PWM on OCR2B (Arduino digital pin 3) // set pin high on overflow, clear on compare match with OCR2B TCCR2A = 0x23; TCCR2B = 0x0C; // select timer2 clock as 16 MHz I/O clock / 64 = 250 kHz OCR2A = 249; // top/overflow value is 249 => produces a 1000 Hz PWM pinMode(3, OUTPUT); // enable the PWM output (you now have a PWM signal on digital pin 3) OCR2B = 125; // set the PWM to 50% duty cycle
// Transistors pinMode(TransMag1, OUTPUT); pinMode(TransMag2, OUTPUT);
// IR - light barrier pinMode(IRsend, OUTPUT); pinMode(IRreceive, INPUT);
// Piezo Speaker pinMode(beep, OUTPUT);
// Servos ServoLift.attach(6); // Servo to Lift the coin on digital pwm pin 6 ServoLift.write(44); ServoLin.attach(3); // Linear actuator on modified digital pwm pin 3 ServoLin.writeMicroseconds(2000); delay(3000); ServoLift.slowmove(124, 20); delay(2000); ServoLin.writeMicroseconds(1800); delay(500); }
// Morse Code void dash() { digitalWrite(beep, HIGH); delay(length*3); digitalWrite(beep, LOW); }
void dot() { digitalWrite(beep, HIGH); delay(length); digitalWrite(beep, LOW); }
void intra_char_gap() { delay(length); }
void char_gap() { delay(length*3); }
void word_gap() { delay(length); }
void blink_char(char c) { if(c == '-') dash(); else dot(); intra_char_gap(); }
void blink(char str[]) { int c; int ic; for(c=0; c<strlen(str); c++) { if(str[c] == ' ') word_gap(); else { int idx = (int)toupper(str[c]) - 65; char* chr = lookup[idx]; for(ic=0; ic<strlen(chr); ic++) { blink_char(chr[ic]); } char_gap(); } } }
void loop() {
delay(2000); digitalWrite(IRsend, HIGH); // read the value of the Infrared LED: int analogValue = analogRead(IRreceive); Serial.println(analogRead(IRreceive));
// if the analog value is below treshold, coin is in slot - start sequence: if (analogValue < threshold) { digitalWrite(IRsend, LOW); ServoLin.writeMicroseconds(1900); delay(1000); ServoLin.writeMicroseconds(1020); ServoLift.slowmove(46, 20); delay(2000); digitalWrite(11, HIGH); // set the Transistor for Magnet2 on delay(80); digitalWrite(10, HIGH); // set the Transistor for Magnet1 on delay(200); ServoLift.slowmove(54, 10); delay(300); ServoLin.writeMicroseconds(1900); delay(1000); ServoLift.slowmove(124, 20); delay(1000); ServoLin.writeMicroseconds(1700); delay(620); digitalWrite(11, LOW); // set the Transistor for Magnet2 off digitalWrite(10, LOW); // set the Transistor for Magnet1 off }
// if the analog value is above treshold, coin is missing - morse "help please" else { blink("help please"); }
}
The machine Coin is part of my final projekt TRIVIAL MOTION at the Art University Linz, Department for Experimental Arts.
The diploma TRIVIAL MOTION is available in german only.